package co.com.coomeva.adminEvaluacion.modelo.persistencia;

import java.util.List;
import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.criterion.Example;

import co.com.coomeva.adminEvaluacion.modelo.entidades.EdColaboradorJefe;

/**
 * A data access object (DAO) providing persistence and search support for
 * EdColaboradorJefe entities. Transaction control of the save(), update() and
 * delete() operations can directly support Spring container-managed
 * transactions or they can be augmented to handle user-managed Spring
 * transactions. Each of these methods provides additional information for how
 * to configure it for the desired type of transaction control.
 * 
 * @see co.com.coomeva.adminEvaluacion.modelo.entidades.EdColaboradorJefe
 * @author MyEclipse Persistence Tools
 */

public class EdColaboradorJefeDAO extends BaseHibernateDAO {
	private static final Log log = LogFactory
			.getLog(EdColaboradorJefeDAO.class);
	// property constants
	public static final String EMP_EMPRESA = "empEmpresa";
	public static final String EMP_CARGO = "empCargo";
	public static final String EMP_CARGO_NOMBRE = "empCargoNombre";
	public static final String EMP_GRADO = "empGrado";
	public static final String EMP_DIVISION = "empDivision";
	public static final String EMP_DIVISION_NOMBRE = "empDivisionNombre";
	public static final String EMP_DEPTO = "empDepto";
	public static final String EMP_DEPTO_NOMBRE = "empDeptoNombre";
	public static final String EMP_AREA = "empArea";
	public static final String EMP_AREA_NOMBRE = "empAreaNombre";
	public static final String JEFE_CODIGO = "jefeCodigo";
	public static final String JEFE_CARGO = "jefeCargo";
	public static final String JEFE_CARGO_NOMBRE = "jefeCargoNombre";
	public static final String JEFE_GRADO = "jefeGrado";
	public static final String JEFE_DIVISION = "jefeDivision";
	public static final String JEFE_DEPTO = "jefeDepto";
	public static final String JEFE_AREA = "jefeArea";
	public static final String ROL_CODIGO = "rolCodigo";

	public void save(EdColaboradorJefe transientInstance) {
		log.debug("saving EdColaboradorJefe instance");
		try {
			getSession().save(transientInstance);
			log.debug("save successful");
		} catch (RuntimeException re) {
			log.error("save failed", re);
			throw re;
		}
	}

	public void delete(EdColaboradorJefe persistentInstance) {
		log.debug("deleting EdColaboradorJefe instance");
		try {
			getSession().delete(persistentInstance);
			log.debug("delete successful");
		} catch (RuntimeException re) {
			log.error("delete failed", re);
			throw re;
		}
	}

	public EdColaboradorJefe findById(
			co.com.coomeva.adminEvaluacion.modelo.entidades.EdColaboradorJefeId id) {
		log.debug("getting EdColaboradorJefe instance with id: " + id);
		try {
			EdColaboradorJefe instance = (EdColaboradorJefe) getSession()
					.get(
							"co.com.coomeva.adminEvaluacion.modelo.entidades.EdColaboradorJefe",
							id);
			return instance;
		} catch (RuntimeException re) {
			log.error("get failed", re);
			throw re;
		}
	}

	public List findByExample(EdColaboradorJefe instance) {
		log.debug("finding EdColaboradorJefe instance by example");
		try {
			List results = getSession()
					.createCriteria(
							"co.com.coomeva.adminEvaluacion.modelo.entidades.EdColaboradorJefe")
					.add(Example.create(instance)).list();
			log.debug("find by example successful, result size: "
					+ results.size());
			return results;
		} catch (RuntimeException re) {
			log.error("find by example failed", re);
			throw re;
		}
	}

	public List findByProperty(String propertyName, Object value) {
		log.debug("finding EdColaboradorJefe instance with property: "
				+ propertyName + ", value: " + value);
		try {
			String queryString = "from EdColaboradorJefe as model where model."
					+ propertyName + "= ?";
			Query queryObject = getSession().createQuery(queryString);
			queryObject.setParameter(0, value);
			return queryObject.list();
		} catch (RuntimeException re) {
			log.error("find by property name failed", re);
			throw re;
		}
	}

	public List findByEmpEmpresa(Object empEmpresa) {
		return findByProperty(EMP_EMPRESA, empEmpresa);
	}

	public List findByEmpCargo(Object empCargo) {
		return findByProperty(EMP_CARGO, empCargo);
	}

	public List findByEmpCargoNombre(Object empCargoNombre) {
		return findByProperty(EMP_CARGO_NOMBRE, empCargoNombre);
	}

	public List findByEmpGrado(Object empGrado) {
		return findByProperty(EMP_GRADO, empGrado);
	}

	public List findByEmpDivision(Object empDivision) {
		return findByProperty(EMP_DIVISION, empDivision);
	}

	public List findByEmpDivisionNombre(Object empDivisionNombre) {
		return findByProperty(EMP_DIVISION_NOMBRE, empDivisionNombre);
	}

	public List findByEmpDepto(Object empDepto) {
		return findByProperty(EMP_DEPTO, empDepto);
	}

	public List findByEmpDeptoNombre(Object empDeptoNombre) {
		return findByProperty(EMP_DEPTO_NOMBRE, empDeptoNombre);
	}

	public List findByEmpArea(Object empArea) {
		return findByProperty(EMP_AREA, empArea);
	}

	public List findByEmpAreaNombre(Object empAreaNombre) {
		return findByProperty(EMP_AREA_NOMBRE, empAreaNombre);
	}

	public List findByJefeCodigo(Object jefeCodigo) {
		return findByProperty(JEFE_CODIGO, jefeCodigo);
	}

	public List findByJefeCargo(Object jefeCargo) {
		return findByProperty(JEFE_CARGO, jefeCargo);
	}

	public List findByJefeCargoNombre(Object jefeCargoNombre) {
		return findByProperty(JEFE_CARGO_NOMBRE, jefeCargoNombre);
	}

	public List findByJefeGrado(Object jefeGrado) {
		return findByProperty(JEFE_GRADO, jefeGrado);
	}

	public List findByJefeDivision(Object jefeDivision) {
		return findByProperty(JEFE_DIVISION, jefeDivision);
	}

	public List findByJefeDepto(Object jefeDepto) {
		return findByProperty(JEFE_DEPTO, jefeDepto);
	}

	public List findByJefeArea(Object jefeArea) {
		return findByProperty(JEFE_AREA, jefeArea);
	}

	public List findByRolCodigo(Object rolCodigo) {
		return findByProperty(ROL_CODIGO, rolCodigo);
	}

	public List findAll() {
		log.debug("finding all EdColaboradorJefe instances");
		try {
			String queryString = "from EdColaboradorJefe";
			Query queryObject = getSession().createQuery(queryString);
			return queryObject.list();
		} catch (RuntimeException re) {
			log.error("find all failed", re);
			throw re;
		}
	}

	public EdColaboradorJefe merge(EdColaboradorJefe detachedInstance) {
		log.debug("merging EdColaboradorJefe instance");
		try {
			EdColaboradorJefe result = (EdColaboradorJefe) getSession().merge(
					detachedInstance);
			log.debug("merge successful");
			return result;
		} catch (RuntimeException re) {
			log.error("merge failed", re);
			throw re;
		}
	}

	public void attachDirty(EdColaboradorJefe instance) {
		log.debug("attaching dirty EdColaboradorJefe instance");
		try {
			getSession().saveOrUpdate(instance);
			log.debug("attach successful");
		} catch (RuntimeException re) {
			log.error("attach failed", re);
			throw re;
		}
	}

	public void attachClean(EdColaboradorJefe instance) {
		log.debug("attaching clean EdColaboradorJefe instance");
		try {
			getSession().lock(instance, LockMode.NONE);
			log.debug("attach successful");
		} catch (RuntimeException re) {
			log.error("attach failed", re);
			throw re;
		}
	}
}